package br.com.sisgerenciamento.dao.pedido;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import br.com.sisgerenciamento.exceptions.AlterarException;
import br.com.sisgerenciamento.exceptions.ApplicationException;
import br.com.sisgerenciamento.exceptions.ExcluirException;
import br.com.sisgerenciamento.exceptions.InserirException;
import br.com.sisgerenciamento.model.pedido.PedidoVO;

public interface PedidoDAOService{

	PedidoVO inserir(PedidoVO vo) throws InserirException;
	
	PedidoVO consultar(Long codigo) throws ApplicationException;
	
	List<PedidoVO> listarPorCliente(String nomeCliente) throws ApplicationException;
	
	List<PedidoVO> listarPedidoPendentesEConfirmados() throws ApplicationException;
	
	List<PedidoVO> listarPedidosPorPerido(Date dataInicio, Date dataFim) throws ApplicationException;
	
	void alterar(PedidoVO vo) throws AlterarException;
	
	void impressoCozinha(Long codPedido) throws ApplicationException;

	void excluir(PedidoVO vo) throws ExcluirException;
	
	public void cancelarPedido(PedidoVO vo) throws ExcluirException;
	
	ArrayList<PedidoVO> buscarPedidoPorTipoLocacaoEPeriodo(Integer tipoLocacao, Date dataInicial, Date dataFinal) throws ApplicationException;
	
	ArrayList<PedidoVO> listarImpressaoCozinhaPendente() throws ApplicationException;

	ArrayList< PedidoVO > montarRelatorioPedido( Date dataInicialPedido, Date dataFinalPedido, Long codCliente, Long codProduto, Integer situacaoPedido, Boolean promocao )throws ApplicationException;
	
}
